 ' MACRO  BOUTON D CHANGEMENT D OUTILS AUTO WF POUR BOB ZK

   'ToolChange Macro For Bed type tool changer 11/05 Brian et06/20 WF
   Sub Main()
      
   Code "M9"                    'STOP L ARROSAGE
   DoSpinStop()                 ' STOP LA SPINDLE 
   ActivateSignal(Output5)	' ACTIVE LA SORTIE 5 REMONTE LE CACHE POUSSIERE   
   
    
   OldTool = GetOEMDRO (24) 	' ENREGISTRE LE N° DE L OUTILS DANS LA BROCHE 
   OldTool = GetOEMDRO (1200) 'Tool In spindle DRO You must add this to your settings screen

   x = GetToolChangeStart( 0 )
   y = GetToolChangeStart( 1 ) 
   z = GetToolChangeStart( 2 ) 
   a = GetToolChangeStart( 3 ) 
   b = GetToolChangeStart( 4 ) 
   c = GetToolChangeStart( 5 )

    tool = GetSelectedTool()
    NewTool = tool    
                         
      'Tool Changer Macro (Bed Type)
 MaxToolNum =  8       'Maximum d outils  pour le rack
 ToolDown   = -237.45     'Z bas position pour prendre ou relacher les outils dans le rack
 ToolUp     = -40      'Z haut de secu pour les deplacements au dessus table et rack
 Yprepa     =  1000    'Y position pour la descente du porte outils  permettant encliquement dans les rainures des berceaux 
 Ypos       =  1176.33 'Y position à fond de berceau  pour prendre ou relacher l outils
    
         Newtool= Question("Entrez le N°du nouvel Outils du N°1 au N°8 "  & MaxToolNum1)  
         If NewTool = OldTool Or   NewTool>MaxToolNum Or  NewTool=0 Then'   ' si Newtool est egale à OldTool alors
         Message"******OOOOO**** Erreur de N° d'Outils *****OOOOO ******"        
             Exit Sub 
               
        End If  	       	 ' sortie du sous programme                                 
           
        Code "G00 G53 Z" & ToolUp     ' va a grande vitesse en Z secu coordonnées Machine  
        While IsMoving()              ' tant que ça bouge
        Wend                          'fin du mouvement
  Call MovePos(OldTool)               '**** appel MovePos(OldTool) coordonnées Machine des outils
        While IsMoving()              ' tant que ça bouge
        Wend                          'fin du mouvement
        Code "G53 Z" & ToolDown       'va à Z position pour  relacher les outils dans le rack
        Code "G53 Y"& Ypos            'va à Y position à fond de berceau  pour prendre ou relacher l outils
        Code "G4 P1.75"                ' temporisation 1.75 seconde
        While IsMoving()
        Wend
        
        ActivateSignal(Output6)        'active la sortie 6 ( machoires) pour relacher l'outils
        Code "G4 P3.0"                 'attend 3 secondes pour relacher  l'outils + jet d air chasse copeaux
        
        Code "G53 Z" & ToolUp          ' va  en Z secu coordonnées Machine  

     Call MovePos(NewTool)                '**** appel MovePos(NewTool)coordonnées Machine des outils
          While IsMoving()
          Wend
          Code "G53 Z" & ToolUp         'Z haut de secu pour les deplacement au dessus table et rack
          Code "G53 Y" & Ypos           'Y position à fond de berceau  pour prendre ou relacher l outils
          Code "G53 Z" & ToolDown       'Z bas position pour prendre ou relacher les outils dans le rack
          Code "G4 P2.75"               ' temporisation 2.75 seconde
          While IsMoving()              ' tant que ça bouge
          Wend
          DeActivateSignal(Output6)     'desactive la sortie 6 de la carte en plus ou en moins selon la config des pins
          Code "G4 P2.0"                'temporisation 2secondes attente fermeture des machoires sortie 5
          While IsMoving()              'tant que ça bouge
          Wend
          Code "G53 Y" & Yprepa         'Y position pour la descente du porte outils  permettant encliquement dans les rainures des berceaux 

          Code "G53 Z" & ToolUp         'Z haut de secu pour les deplacement au dessus table et rack

          While IsMoving()              ' tant que ça bouge

          Wend
          
     Call SetUserDRO (1200,NewTool)
          SetCurrentTool( NewTool )
          Code "G43 H" & NewTool         'prend compte la difference de longueur d outils par rapport à l'outils N°1 qui reference
                                         ' et avec lequel on fait le zero piece
          Code "G00 X" & x & " Y" & y   'retourne aux positions x et y qui ont ete enregistre au debut de la macro
          While IsMoving()              'tant que ça bouge
          Wend
                    Code "G4 P10.0"                'temporisation 2secondes attente descente cache poussiere
          DeActivateSignal(Output5)     'desactive la sortie 5 cache poussiere en bas
          DeActivateSignal(Output6)     'desactive la sortie à la fin le changement d outils
      End Sub

 Sub MovePos(ByVal ToolNumber As Integer)

 Select Case ToolNumber
       	                                 ' COORDONNEES  X ET Y DES OUTILS SELON LEUR N°
       Case Is = 1		         ' VALEUR X ET Y de l outils N°1 sur le rack
         Xpos = 430.17
         Yprepa = 1000			 ' EN COORDONNEES MACHINE
         YPos = 1176.33				
       Case Is = 2				
         Xpos = 543.01
          Yprepa =1000				
         YPos = 1176.33
       Case Is = 3
         Xpos = 655.68
         Yprepa = 1000	
         YPos = 1176.33	
       Case Is = 4
         Xpos = 771.82
         Yprepa = 1000	
         YPos =1176.33	 
       Case Is = 5
         Xpos = 885.60
         Yprepa = 1000	
         YPos = 1176.33	
       Case Is = 6
         Xpos = 998.28
         Yprepa = 1000	
         YPos = 1176.33	
       Case Is = 7
         Xpos = 1115.72
         Yprepa = 1000
         YPos = 1176.33	
       Case Is = 8
         Xpos = 1227.27
         Yprepa = 1000	
         YPos  =1176.33
         End Select
         
         Code "G53 Y"& Yprepa 'ok
         Code "G53 X"& XPos   'ok
         While IsMoving()
         Wend
         
End Sub

Main              

